/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Dao;

import entidadesDoBanco.Funcionario;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author User
 */
public class FuncionarioDaoImp implements FuncionarioDao{
    
    private  PessoaDao pDao;

    @Override
    public Object salvar(Object obj) throws Exception {
        Connection conn = null;
        PreparedStatement psmt = null;
        pDao = new PessoaDaoImp();
        Funcionario funcionario = null;

        try {

            funcionario = (Funcionario) pDao.salvar(obj);
            String BANCO = "INSERT INTO funcionario(cracha, salario, idPessoa, idTurno, idFuncao) VALUES(?, ?, ?, ?, ?)";
            conn = FabricaConexao.abreConexao();
            psmt = conn.prepareStatement(BANCO);
            psmt.setString(1, funcionario.getCracha());
            psmt.setString(2, funcionario.getSalario());
            psmt.setInt(3, funcionario.getId());
            psmt.setInt(4, funcionario.getIdTurno().getId());
            psmt.setInt(5, funcionario.getIdFuncao().getId());
            psmt.executeUpdate();

        } catch (Exception e) {
        } finally {
            FabricaConexao.fechaConexao(conn, psmt);
        }
        return funcionario;
    }

    @Override
    public void alterar(Object obj) throws Exception {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void excluir(int id) throws Exception {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public Object procurar(Integer id) throws Exception {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public List listar() throws Exception {
        Connection conn = null;
        PreparedStatement psmt = null;
        ResultSet rs = null;
        List funcionarios = new ArrayList();

        try {
            String BANCO = "SELECT * FROM pessoa p join funcionario f on p.id = f.idPessoa";
            conn = FabricaConexao.abreConexao();
            psmt = conn.prepareStatement(BANCO);
            rs = psmt.executeQuery();
            Funcionario funcionario;

            while (rs.next()) {
                funcionario = new Funcionario();
                funcionario.setId(rs.getInt("id"));
                funcionario.setCelular(rs.getString("celular"));
                funcionario.setCpf(rs.getString("cpf"));
                funcionario.setCracha(rs.getString("cracha"));
                funcionario.setEmail(rs.getString("email"));
                funcionarios.add(funcionario);
            }
        } catch (Exception e) {
        } finally {
            FabricaConexao.fechaConexao(conn, psmt, rs);
        }
        return funcionarios;
    }
}
